🔔 API de Alertas e Notificações - Documentação Completa
📋 Visão Geral
A API de Alertas e Notificações é responsável por toda a gestão de alertas do sistema e envio de notificações push no CordenaAi. Esta API permite criar, consultar e gerenciar alertas para usuários específicos, além de enviar notificações push para dispositivos móveis e processar alertas periódicos para mensagens não lidas.
🎯 Endpoints Disponíveis
📝 Alertas
1. GET /api/alertas
Listar Todos os Alertas
- Descrição: Retorna uma lista completa de todos os alertas com filtros opcionais
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Query parameters opcionais para filtros
- Resposta: Array de objetos AlertaResponse com paginação
- Uso: Dashboard de alertas, listagem administrativa, relatórios
2. POST /api/alertas
Criar Novo Alerta
- Descrição: Cria um novo alerta no sistema para um destinatário específico
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Body: Objeto CriarAlertaRequest com dados obrigatórios
- Resposta: Objeto AlertaResponse criado com ID gerado
- Uso: Criação de alertas administrativos, notificações de sistema
3. GET /api/alertas/{id}
Obter Alerta por ID
- Descrição: Retorna os dados completos de um alerta específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do alerta
- Resposta: Objeto AlertaResponse completo
- Uso: Visualização de detalhes do alerta, edição
4. DELETE /api/alertas/{id}
Excluir Alerta
- Descrição: Exclui permanentemente um alerta do sistema
- Método: DELETE
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do alerta
- Resposta: Confirmação de exclusão
- Uso: Remoção de alertas obsoletos, limpeza administrativa
5. POST /api/alertas/{id}/marcar-como-lida
Marcar Alerta como Lido
- Descrição: Marca um alerta específico como lido pelo usuário
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do alerta
- Resposta: Confirmação de marcação
- Uso: Interface do usuário para marcar alertas como lidos
6. GET /api/alertas/usuario/{identificador}
Obter Alertas por Usuário
- Descrição: Retorna todos os alertas de um usuário específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificador (path): ID, email, CPF ou username do usuário
- Resposta: Array de objetos AlertaResponse
- Uso: Interface do usuário para visualizar seus alertas
7. GET /api/alertas/usuario/{identificador}/nao-lidos
Obter Alertas Não Lidos por Usuário
- Descrição: Retorna apenas os alertas não lidos de um usuário específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificador (path): ID, email, CPF ou username do usuário
- Resposta: Array de objetos AlertaResponse não lidos
- Uso: Contador de notificações, dashboard do usuário
📱 Notificações
1. POST /api/notificacoes/push
Enviar Notificação Push
- Descrição: Envia notificação push para usuários específicos
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Body: Objeto EnviarNotificacaoPushRequest
- Resposta: Confirmação de envio
- Uso: Notificações em tempo real para dispositivos móveis
2. POST /api/notificacoes/mensagem/{mensagemId}
Enviar Notificação para Mensagem
- Descrição: Envia notificação para todos os destinatários de uma mensagem específica
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
mensagemId (path): ID da mensagem
- Resposta: Confirmação de envio
- Uso: Notificação automática quando mensagem é criada
3. POST /api/notificacoes/alertas-periodicos
Processar Alertas Periódicos
- Descrição: Processa alertas periódicos para mensagens não lidas
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Confirmação de processamento
- Uso: Job agendado para lembrar usuários de mensagens não lidas
🔧 Modelo de Dados
Estrutura do Alerta
{
"id": "integer",
"conteudo": "string",
"tipo": "string",
"leitura": "string",
"dataCriacao": "datetime",
"dataAtualizacao": "datetime",
"destinatarioId": "string",
"usuarioAtualizadorId": "string",
"usuarioAtualizacao": "string",
"status": "string"
}
Estrutura da Notificação Push
{
"usuarioIds": ["string"],
"titulo": "string",
"mensagem": "string",
"dados": "object"
}
Estrutura de Criação de Alerta
{
"conteudo": "string",
"tipo": "string",
"destinatarioId": "string"
}
Estrutura de Pesquisa de Alertas
{
"destinatarioId": "string",
"tipo": "string",
"leitura": "string",
"status": "string",
"dataInicio": "datetime",
"dataFim": "datetime",
"pagina": "integer",
"tamanhoPagina": "integer"
}
🔐 Autenticação e Autorização
Todos os endpoints requerem:
- JWT Bearer Token no header
Authorization
- Permissões específicas baseadas no tipo de usuário:
- Administradores: Acesso completo a todos os endpoints
- Usuários: Acesso limitado aos seus próprios alertas
- Sistema: Acesso para envio de notificações automáticas
📊 Casos de Uso Principais
1. Criação de Alerta Administrativo
POST /api/alertas
Content-Type: application/json
Authorization: Bearer {token}
{
"conteudo": "Sistema será atualizado às 02:00",
"tipo": "ALERTA",
"destinatarioId": "user-123"
}
2. Envio de Notificação Push
POST /api/notificacoes/push
Content-Type: application/json
Authorization: Bearer {token}
{
"usuarioIds": ["user-123", "user-456"],
"titulo": "Nova Mensagem",
"mensagem": "Você recebeu uma nova mensagem",
"dados": {
"mensagemId": 789,
"tipo": "comunicado"
}
}
3. Consulta de Alertas Não Lidos
GET /api/alertas/usuario/user-123/nao-lidos
Authorization: Bearer {token}
4. Marcar Alerta como Lido
POST /api/alertas/456/marcar-como-lida
Authorization: Bearer {token}
⚠️ Validações e Regras de Negócio
Validações Obrigatórias
- Conteúdo: Obrigatório, não pode ser vazio
- Destinatário: Deve existir no sistema
- Tipo: Valores válidos (ALERTA, NOTIFICACAO, SISTEMA)
- Usuário: Deve estar autenticado
Regras de Negócio
- Status de Leitura: nao_lida, lida
- Tipos de Alerta: ALERTA, NOTIFICACAO, SISTEMA
- Status do Registro: ativo, inativo, excluido
- Soft Delete: Alertas inativados não são excluídos permanentemente
- Auditoria: Todas as operações são logadas
- Notificações Push: Limitadas a usuários válidos e ativos
🚨 Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 201: Criado com sucesso
- 400: Dados inválidos
- 401: Não autorizado
- 403: Acesso negado
- 404: Alerta não encontrado
- 409: Conflito (destinatário inválido)
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
📈 Performance e Limitações
Limitações
- Paginação: Listas retornam máximo 100 registros por página
- Rate Limiting: 1000 requests por hora por usuário
- Timeout: 30 segundos por requisição
- Notificações Push: Máximo 1000 usuários por envio
Otimizações
- Cache: Alertas são cacheados por 5 minutos
- Índices: Busca otimizada por destinatário e status
- Compressão: Respostas comprimidas com gzip
- Processamento Assíncrono: Notificações push processadas em background
🔄 Integração com Outros Módulos
Módulos Relacionados
- Usuários: Associação obrigatória para destinatários
- Mensagens: Integração para notificações automáticas
- Sistema: Alertas de manutenção e atualizações
- Mobile App: Notificações push para dispositivos
- Email: Integração para notificações por email
📱 Uso em Aplicações
Web App
- Dashboard de alertas administrativos
- Interface de criação de alertas
- Visualização de alertas por usuário
- Configuração de notificações
Mobile App
- Recebimento de notificações push
- Visualização de alertas não lidos
- Marcação de alertas como lidos
- Configurações de notificação
Sistema
- Alertas automáticos de sistema
- Notificações de manutenção
- Processamento de alertas periódicos
- Integração com jobs agendados
🛠️ Manutenção e Monitoramento
Logs Importantes
- Criação de novos alertas
- Envio de notificações push
- Marcação de alertas como lidos
- Erros de envio de notificações
- Tentativas de acesso não autorizado
Métricas Monitoradas
- Número de alertas criados por dia
- Taxa de leitura de alertas
- Sucesso no envio de notificações push
- Tempo de resposta dos endpoints
- Uso de recursos por endpoint
📚 Exemplos Práticos
Fluxo Completo de Criação de Alerta
- Validação de dados no backend pela própria API
- POST /api/alertas com dados validados
- Criação automática do alerta no sistema
- Envio de notificação push (se configurado)
- Registro de auditoria da operação
Fluxo de Notificação Push
- POST /api/notificacoes/push com lista de usuários
- Validação de usuários ativos e válidos
- Envio assíncrono para dispositivos móveis
- Registro de status de entrega
- Retry automático para falhas temporárias
Fluxo de Alertas Periódicos
- POST /api/notificacoes/alertas-periodicos (job agendado)
- Busca de mensagens não lidas
- Criação de alertas para usuários
- Envio de notificações push
- Registro de processamento no log
Versão: 1.0
Última Atualização: Outubro de 2025
Responsável: Equipe de Desenvolvimento CordenaAi